Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In some cases, software applications are designed for distribution and implementation on multiple different computer systems. Such software applications are referred to as distributed applications. These applications may be configured such that different portions or tiers of the application are capable of being run on different computer systems. As such, these application portions may be assigned for execution on different computer systems. In some cases, the computer systems may be the same type of computer system, while in other cases, the computer systems are different types of computer systems that may include different hardware, software and/or operating systems.
These computer systems may be provided and managed by a cloud hoster or cloud provider in the same or in another geographic region. As used herein, a “cloud provider” refers to an entity that provides cloud computing resources. The physical computer systems that actually run the cloud are opaque to the workload that uses the computer systems. As such, when a software application or service is running on the cloud, the application or service owner does not know on which computer system the service/application is actually running